package com.kobeliu.entity;

/**
 * @Author: Kobe_Liu
 * @Date: 2021/12/6 9:27
 */

/**
 * 句子 是一个单词列表，列表中的单词之间用单个空格隔开，且不存在前导或尾随空格。每个单词仅由大小写英文字母组成（不含标点符号）。
 *
 *     例如，"Hello World"、"HELLO" 和 "hello world hello world" 都是句子。
 *
 * 给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ，请你将 s​​ 截断 ​，​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。
 * 示例 1：
 *
 * 输入：s = "Hello how are you Contestant", k = 4
 * 输出："Hello how are you"
 * 解释：
 * s 中的单词为 ["Hello", "how" "are", "you", "Contestant"]
 * 前 4 个单词为 ["Hello", "how", "are", "you"]
 * 因此，应当返回 "Hello how are you"
 *
 * 示例 2：
 *
 * 输入：s = "What is the solution to this problem", k = 4
 * 输出："What is the solution"
 * 解释：
 * s 中的单词为 ["What", "is" "the", "solution", "to", "this", "problem"]
 * 前 4 个单词为 ["What", "is", "the", "solution"]
 * 因此，应当返回 "What is the solution"
 *
 * 示例 3：
 *
 * 输入：s = "chopper is not a tanuki", k = 5
 * 输出："chopper is not a tanuki"
 */
public class Demo_67_No1816 {

    public static void main(String[] args) {

        System.out.println(truncateSentence("chopper is not a tanuki",5));
    }


    /**
     * 一次次叠加，时间复杂度有点高
     * @param s
     * @param k
     * @return
     */
    public static String truncateSentence1(String s, int k) {

        s = s.trim();
        String str = "";
        int p = 0;
        char c;
        for(int i=0;i<k;i++){
            c=s.charAt(p);
            while(p<s.length()){
                c = s.charAt(p);
                if(c != ' '){
                    str += String.valueOf(c);
                    p++;
                }else{
                    break;
                }
            }
            str += " ";
            p++;
        }
        return str.trim();

    }

    /**
     * 拿取i 一步到位
     * 简单题重拳出击
     * @param s
     * @param k
     * @return
     */
    public static String truncateSentence(String s, int k) {

        s = s.trim();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==' '){
                if(--k==0){
                    return s.substring(0,i);
                }
            }
        }
        return s;

    }
}
